// pendings.js
import axios from 'axios';
let cancelToken = axios.CancelToken;


let pending = []; //声明一个数组用于存储每个ajax请求的取消函数和ajax标识
let arr = ['/staff_home/app/employee/selectEmployee'] //路径相同就取消的接口

export default {
    // 添加请求
    addRequest (config){
        // console.log(config)
        config.cancelToken = new cancelToken((c)=>{
            pending.push({ 
                url: config.url,
                method:config.method,
                data:config.method=='get'?JSON.stringify(config.params):JSON.stringify(config.data),
                f: c 
            }); 
        });
        return config
    },
    // 移除请求
    removeRequest  (config) {
        for(let p in pending){
            if(pending[p].url === config.url) {
                // 路径相同就取消请求的接口
                if(arr.indexOf(config.url)!==-1&&pending[p].method === config.method){
                    pending[p].f(); //执行取消操作
                    pending.splice(p, 1); //把这条记录从数组中移除
                } 
                // 路径和所有参数相同才取消的接口
                else if(pending[p].data === (config.method=='get'?JSON.stringify(config.params):JSON.stringify(config.data))){
                    pending[p].f(); //执行取消操作
                    pending.splice(p, 1); //把这条记录从数组中移除
                }
            }
        }
    },

  /**
   * 清空所有pending请求
   */
  clearPending() { 
    pending.forEach(item=>{
        item.f()
    })
    pending = []
  },
}